import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    userinfo:'',
    roles:[],
    token:window.localStorage.getItem('token') || ''
  },
  mutations: {
    //将获取到的token存到本地
    SET_TOKEN(state,token){
      state.token=token
      window.localStorage.setItem('token',state.token)
    },
    setUserInfo(state,val){
      state.userinfo=val
    }
  },
  actions: {
    userLogin({commit},userinfo){
      //返回一个异步回调promise
      return new Promise((resolve,reject)=>{
        //请求数据
        getLogin(userinfo).then(res=>{
          const data = res.data
          if (data.code === 200) {
            //调用mutations的方法，将token存到state中
            commit('SET_TOKEN',data.token)
          }
          resolve(res.data)
        }).catch(error=>{
          reject(error)
        })
      })
    },
    //根据用户的token获取用户个人的信息
    getLogin({state}){
      return new Promise((resolve,reject)=>{
        //调用接口，获取数据
        getUsreInfo(state).then(res=>{
          //将获取到的信息放到数据中存储
          state.roles.push(res.data)
          resolve(res.data)
        }).catch(error=>{
          reject(error)
        })
      })
    }
  },
  //计算
  getters:{
    //一旦数据变化，重新计算
    roles(state){
      return state.roles
    },
    token(state){
      return state.token
    }
  },
  modules: {
  }
})
